Existing techniques for detecting the presence of unauthorized programs are typically resource-intensive. For example, they generally require constant updates (e.g., of blacklists) and periodic or continuous scans for problems. The situation is exacerbated if the device being protected by such techniques has limited resources, such as limited memory, or by being powered by a battery. As one example, a device with limited resources may not be able to store definitions for detecting all known unauthorized programs. As another example, scanning for unauthorized programs is typically a power-intensive act, and may quickly deplete the battery of a battery-powered device. In some environments, a central authority is used to facilitate the discovery of unauthorized programs. One drawback of this approach is that it typically requires that the device being protected compile detailed logs of device activities. Generating such logs is resource-intensive (e.g., requiring large amounts of disk storage; processing power to assemble the log data; and the bandwidth to deliver the log data to the central authority) and can also present privacy problems.
Existing techniques for detecting the presence of unauthorized programs are also generally vulnerable to attempts by such programs to cause incorrect reporting. For example, a rootkit can “listen in” to requests by applications to the operating system, and may modify these requests and their responses. If an application requests information about what processes are running, a malicious rootkit application can avoid detection by removing information about itself from the report that is returned by the operating system.
Existing techniques for screening against the installation or execution of unauthorized programs are also known to be vulnerable to new instances of malware that may not immediately be detectable due to a lack of information about their structure and functionality. Therefore, and irrespective of the resources available to the device, if the unauthorized program is sufficiently sophisticated and/or has not previously been encountered, it can evade detection and cause undetected harm. And, if the unauthorized program has intentionally been installed by the user to bypass detection (e.g., to facilitate software piracy), traditional techniques may fail to locate the unauthorized program, or any other unauthorized activities.